#test.pyimport torch
import torch
from torchvision import transforms
from PIL import Image
import matplotlib.pyplot as plt
import pyttsx3  # 导入语音库
数据预处理 = transforms.Compose([
    transforms.Resize(256),  # 将图像大小调整为 256x256
    transforms.CenterCrop(224),  # 从中心裁剪出 224x224 的图像
    transforms.ToTensor(),  # 将图像转换为张量
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),  # 归一化
])
# 加载模型
模型 = torch.load('模型文件.pth',weights_only=False)
模型.eval()  # 将模型设置为评估模式
# 指定设备
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
模型.to(device)
# 读取图像
image_path = '布.jpg'  # 替换为你的图像路径
image = Image.open(image_path).convert('RGB')  # 确保图像是RGB格式
# 预处理图像
image = 数据预处理(image).unsqueeze(0)  # 添加批量维度
image = image.to(device)
# 进行预测
with torch.no_grad():
    output =模型(image)
    _, predicted = torch.max(output, 1)
# 类别名称
class_names = [
    "帕子", "石头", "剪刀"
]
# 读取图像
image_path = '布.jpg'  # 替换为你的图像路径
image = Image.open(image_path).convert('RGB')  # 确保图像是RGB格式
# 显示原始图像
plt.imshow(image)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像时负号'-'显示为方块的问题
plt.title("原始图像")
plt.show()
#显示预测结果
predicted_class = class_names[predicted.item()]
print(f'图片识别结果是: {predicted_class}')
pyttsx3.speak("预测结果是")
pyttsx3.speak(predicted_class)